#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/stat.h>

#define FIFO_NAME "/tmp/myfifo"

int main() {
    int fd;
    char buf[1024];

    // 创建有名管道
    if (mkfifo(FIFO_NAME, 0666) == -1) {
        perror("mkfifo");
        exit(EXIT_FAILURE);
    }

    // 打开有名管道进行读操作
    fd = open(FIFO_NAME, O_RDONLY);
    if (fd == -1) {
        perror("open");
        exit(EXIT_FAILURE);
    }

    // 循环读取数据并输出
    while (1) {
        memset(buf, 0, sizeof(buf));
        if (read(fd, buf, sizeof(buf)) > 0) {
            printf("Received: %s", buf);
            if (strcmp(buf, "quit\n") == 0) {
                break;
            }
        }
    }

    // 关闭有名管道
    close(fd);

    // 删除有名管道
    unlink(FIFO_NAME);

    return 0;
}
